﻿using Newtonsoft.Json;
using System.Collections.Generic;
using XUCore.WeChat.Apis;

namespace XUCore.WeChat.Enterprise.Apis.Group.Chat
{
    public class ChatDetailApiResult : ApiResultBase
    {
        /// <summary>
        /// 客户群详情
        /// </summary>
        [JsonProperty("group_chat")]
        public GroupChatDetailResult group_chat { get; set; }
    }

    public class GroupChatDetailResult
    {
        /// <summary>
        /// 客户群ID
        /// </summary>
        [JsonProperty("chat_id")]
        public string chat_id { get; set; }
        /// <summary>
        /// 群名
        /// </summary>
        [JsonProperty("name")]
        public string name { get; set; }
        /// <summary>
        /// 群主ID
        /// </summary>
        [JsonProperty("owner")]
        public string owner { get; set; }
        /// <summary>
        /// 群的创建时间
        /// </summary>
        [JsonProperty("create_time")]
        public string create_time { get; set; }
        /// <summary>
        /// 群公告
        /// </summary>
        [JsonProperty("notice")]
        public string notice { get; set; }
        /// <summary>
        /// 当前群成员版本号。可以配合客户群变更事件减少主动调用本接口的次数
        /// </summary>
        [JsonProperty("member_version")]
        public string member_version { get; set; }
        /// <summary>
        /// 群成员列表
        /// </summary>
        [JsonProperty("member_list")]
        public List<GroupChatMemberResult> member_list { get; set; }
        /// <summary>
        /// 群管理员列表
        /// </summary>
        [JsonProperty("admin_list")]
        public List<GroupChatAdminResult> admin_list { get; set; }
    }
    /// <summary>
    /// 群成员详情
    /// </summary>
    public class GroupChatMemberResult
    {
        /// <summary>
        /// 群成员id
        /// </summary>
        [JsonProperty("userid")]
        public string userid { get; set; }
        /// <summary>
        /// 成员类型。<para/>
        /// 1 - 企业成员<para/>
        /// 2 - 外部联系人<para/>
        /// </summary>
        [JsonProperty("type")]
        public int type { get; set; }
        /// <summary>
        /// 外部联系人在微信开放平台的唯一身份标识（微信unionid），通过此字段企业可将外部联系人与公众号/小程序用户关联起来。仅当群成员类型是微信用户（包括企业成员未添加好友），且企业绑定了微信开发者ID有此字段（查看绑定方法）。第三方不可获取，上游企业不可获取下游企业客户的unionid字段
        /// </summary>
        [JsonProperty("unionid")]
        public string unionid { get; set; }
        /// <summary>
        /// 入群时间
        /// </summary>
        [JsonProperty("join_time")]
        public long join_time { get; set; }
        /// <summary>
        /// 入群方式。<para/>
        /// 1 - 由群成员邀请入群（直接邀请入群）<para/>
        /// 2 - 由群成员邀请入群（通过邀请链接入群）<para/>
        /// 3 - 通过扫描群二维码入群<para/>
        /// </summary>
        [JsonProperty("join_scene")]
        public int join_scene { get; set; }
        /// <summary>
        /// 邀请者。目前仅当是由本企业内部成员邀请入群时会返回该值
        /// </summary>
        [JsonProperty("invitor")]
        public GroupChatInvitorResult invitor { get; set; }
        /// <summary>
        /// 在群里的昵称
        /// </summary>
        [JsonProperty("group_nickname")]
        public string group_nickname { get; set; }
        /// <summary>
        /// 名字。仅当 need_name = 1 时返回<para/>
        /// 如果是微信用户，则返回其在微信中设置的名字<para/>
        /// 如果是企业微信联系人，则返回其设置对外展示的别名或实名<para/>
        /// </summary>
        [JsonProperty("name")]
        public string name { get; set; }
    }

    public class GroupChatInvitorResult
    {
        /// <summary>
        /// 邀请者的userid
        /// </summary>
        [JsonProperty("userid")]
        public string userid { get; set; }
    }
    public class GroupChatAdminResult
    {
        /// <summary>
        /// 群管理员userid
        /// </summary>
        [JsonProperty("userid")]
        public string userid { get; set; }
    }
}
